Asia/Shanghai与GMT |
您所在的位置:网站首页 › 什么是Asia Glory › Asia/Shanghai与GMT |
背景
今天公司一个模块从服务器迁移到k8s,出现时间toString()以后输出结果和以前不一致的情况,原因是以前是CST时间,k8s上统一设置环境时区为GMT-8了 本文会讲清楚中国使用时区的来龙去脉。 下一篇文档,会讲java中,遇到改时区问题,如何解决。 先了解冷知识知识很重要,理解了这些才是时区的关键。 DST:Daylight Saving Time中文名叫“夏令时”,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。中国1986-1991年实行夏令时,1992年废除。 CST:China Standard Time(老外认为有其他含义,中国就这个缩写),中国标准时。 GMT:Greenwich Mean Time,格林威治标准时,地球每15°经度 被分为一个时区,共分为24个时区,相邻时区相差一小时;例: 中国北京位于东八区。 Asia/Shanghai与GMT-8的区别开发和运维经常见到的Asia/Shanghai与GMT-8的是什么意思呢? GMT-8是东八区,北京时间和东八区一致。 Asia/Shanghai是已地区命名的地区标准时,在中国叫CST。这个地区标准时会兼容历史各个时间节点。中国1986-1991年实行夏令时,夏天和冬天差1个小时,Asia/Shanghai会兼容这个时间段。 结论:1992年以后,在中国,GMT-8和Asia/Shanghai是一样的时间,1986-1991之间,夏天会有一小时时差。 举例 { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); Date birthday = sdf.parse("1988-08-13 13:13:13"); System.out.println("birthday = " + birthday.toString()); System.out.println("birthday = " + birthday.getTime()); } { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date birthday = sdf.parse("1988-08-13 13:13:13"); System.out.println("birthday = " + birthday.toString()); System.out.println("birthday = " + birthday.getTime()); }输出结果相差一小时。 birthday = Sat Aug 13 13:13:13 CDT 1988 birthday = 587448793000 birthday = Sat Aug 13 14:13:13 CDT 1988 birthday = 587452393000如果年份改成2020年,时间就一样了。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |